package cn.antblog.poi.ppt;

import org.apache.commons.io.FileUtils;
import org.apache.poi.xslf.usermodel.*;

import java.awt.*;
import java.awt.geom.Rectangle2D;
import java.io.File;
import java.io.FileOutputStream;

/**
 * @author YangJingyi
 * @date 2021-11-25 10:52
 * 使用POI 导出ppt
 */
public class ExportPPT {


    public static void main(String[] args) throws Exception {
        exportPpt1();
    }

    public static void exportPpt1() throws Exception {
        //    步骤1 :通过实例化 XMLSlideShow 类创建一个空的演示文稿，如下所示:
        XMLSlideShow ppt = new XMLSlideShow();
        String slideWidth = "33.867";
        String slideHeight = "19.05";
        //设置幻灯片大小
        ppt.setPageSize(new Dimension(Double.valueOf(Double.valueOf(slideWidth) / 3.53 * 100).intValue(), Double.valueOf(Double.valueOf(slideHeight) / 3.53 * 100).intValue()));
        //步骤2 :使用 getSlideMasters()方法获取幻灯片主题列表。 此后，使用索引选择所需的幻灯片母带，如下所示:
        //XSLFSlideMaster slideMaster = ppt.getSlideMasters().get(0);//可设置母版的
        XSLFSlide first = ppt.createSlide();
        //这里我们得到的默认幻灯片母版是在幻灯片主数据的第0位置。
        byte[] bt2 = FileUtils.readFileToByteArray(new File("C:\\Users\\YangJingyi\\Desktop\\ppt\\top_bcdd.png"));
        //添加图片 到 当前幻灯片
        XSLFPictureData idx2 = ppt.addPicture(bt2, XSLFPictureData.PictureType.PNG);
        XSLFPictureShape picture = first.createPicture(idx2);//设置母版
        picture.setAnchor(new Rectangle(0, 0, ppt.getPageSize().width , ppt.getPageSize().height)); //设置母版大小
        //创建幻灯片
        XSLFSlide slide1 = ppt.createSlide();

        String x = "3.45";  //水平位置
        String y = "12.70"; //垂直位置
        String w = "12.45"; //宽度
        String h = "0.50";  //高度
        XSLFTextBox textBox = slide1.createTextBox();
        textBox.setAnchor(new Rectangle2D.Double(Double.valueOf(x) / 3.53 * 100, Double.valueOf(y) / 3.53 * 100, Double.valueOf(w) / 3.53 * 100, Double.valueOf(h) / 3.53 * 100));
        XSLFTextRun textRun = textBox.setText("实际发布:10");
        textRun.setFontFamily("宋体");
        textRun.setFontSize(16.0);
        textRun.setBold(true); //设置粗体状态

        String x2 = "2.96";  //水平位置
        String y2 = "13.91"; //垂直位置
        String w2 = "10.56"; //宽度
        String h2 = "0.50";  //高度

        XSLFTextBox textBox2 = slide1.createTextBox();
        textBox2.setAnchor(new Rectangle2D.Double(Double.valueOf(x2) / 3.53 * 100, Double.valueOf(y2) / 3.53 * 100, Double.valueOf(w2) / 3.53 * 100, Double.valueOf(h2) / 3.53 * 100));
        /** 生成一个新的文本段落 **/
        XSLFTextParagraph xslfTextRuns = textBox2.addNewTextParagraph();
        /** 添加新的文本 **/
        XSLFTextRun xslfTextRun = xslfTextRuns.addNewTextRun();
        /** 添加新的文本 **/
        xslfTextRun.setText("福海信息港");
        /** 设置字体类型 **/
        xslfTextRun.setFontFamily("宋体");
        /** 设置字体大小 **/
        xslfTextRun.setFontSize(16.0);


        //表格
        XSLFSlide  slide = ppt.createSlide();//创建幻灯片
        Object[][] datas = {{"区域", "总销售额(万元)", "总利润(万元)简单的表格"}, {"江苏省" , 9045,  2256}, {"广东省", 3000, 690}};
        XSLFTable table = slide.createTable();//创建表格
        table.setAnchor(new Rectangle2D.Double(10, 50, 0, 0));
        for(int i = 0; i < datas.length; i++) {
            XSLFTableRow tableRow = table.addRow(); //创建表格行
            for(int j = 0; j < datas[i].length; j++) {
                XSLFTableCell tableCell = tableRow.addCell();//创建表格单元格
                XSLFTextParagraph p = tableCell.addNewTextParagraph();
                XSLFTextRun tr = p.addNewTextRun();
                tr.setText(String.valueOf(datas[i][j]));
            }
        }
        XSLFSlide  slide2 = ppt.createSlide();//创建幻灯片
        ppt.write(new FileOutputStream("C:\\Users\\YangJingyi\\Desktop\\ppt2.pptx"));
    }




}
